package ma.ac.onousc.gestionfi.EngagementPaiement.services;

import java.util.List;

import javax.ejb.Remote;

import ma.ac.onousc.gestionfi.EngagementPaiement.model.Article;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.Autres;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.Beneficiaire;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.BonCommande;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.Cheque;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.Contrat;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.Convention;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.Devis;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.Engagement;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.Fournisseur;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.Justificatif;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.LigneArticle;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.LotMarche;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.Marche;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.OrdrePaiement;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.OrdrePaiementAnnulation;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.OrdreVirement;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.Prestation;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.TypeEngagement;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.TypeJustificatif;
import ma.ac.onousc.gestionfi.EngagementPaiement.model.TypePrestation;
import ma.ac.onousc.gestionfi.budget.model.RubriqueBudgetaire;

@Remote
public interface EngagementPaiementManager {
	
	
	
	//////////////////////////////Engagement & Paiement////////////////////////////
	
	
	//TABLE TypeJustificatif	
	public TypeJustificatif makePersistent(TypeJustificatif eng);
	public void makeTransient(TypeJustificatif eng);
	public List<TypeJustificatif> findAllTypeJustificatif();
	public TypeJustificatif findTypeJustificatifById(int id);
	
	//TABLE Engagement
	public List<Engagement> findByRB(RubriqueBudgetaire rb);	
	public Engagement makePersistent(Engagement eng);
	public void makeTransient(Engagement eng);
	public List<Engagement> findAllEngagement();
	public Engagement findEngagementById(int id);
	
	//TABLE BonCommande
	public List<BonCommande> findBonCommandeByRB(RubriqueBudgetaire rb);
	public BonCommande makePersistent(BonCommande bc);
	public void makeTransient(BonCommande bc);
	public List<BonCommande> findAllBonCommande();
	public BonCommande findBonCommandeById(int id);
	
	//TABLE Devis
	public Devis makePersistent(Devis devis);
	public void makeTransient(Devis devis);
	public List<Devis> findAllDevis();
	public Devis findDevisById(int id);
	public List<Devis> findByBC(BonCommande bc); 
	
	//TABLE Article
	public Article makePersistent(Article article);
	public void makeTransient(Article article);
	public List<Article> findAllArticle();
	public Article findArticleById(int id);
	
	//TABLE LigneArticle
	public LigneArticle makePersistent(LigneArticle ligneArticle);
	public void makeTransient(LigneArticle ligneArticle);
	public List<LigneArticle> findAllLigneArticle();
	public LigneArticle findLigneArticleById(int id);
	
	//TABLE Fournisseur
	public Fournisseur makePersistent(Fournisseur fournisseur);
	public void makeTransient(Fournisseur fournisseur);
	public List<Fournisseur> findAllFournisseur();
	public Fournisseur findFournisseurById(int id);
	
	//TABLE Autres
	public List<Autres> findAutresByRB(RubriqueBudgetaire rb);
	public Autres makePersistent(Autres autres);
	public void makeTransient(Autres autres);
	public List<Autres> findAllAutres();
	public Autres findAutresById(int id);
	
	//TABLE Beneficiaire
	public Beneficiaire makePersistent(Beneficiaire beneficiaire);
	public void makeTransient(Beneficiaire beneficiaire);
	public List<Beneficiaire> findAllBeneficiaire();
	public Beneficiaire findBeneficiaireById(int id);
	
	//TABLE Contrat
	public List<Contrat> findContratByRB(RubriqueBudgetaire rb);
	public Contrat makePersistent(Contrat contrat);
	public void makeTransient(Contrat contrat);
	public List<Contrat> findAllContrat();
	public Contrat findContratById(int id);
	
	//TABLE Convention
	public List<Convention> findConventionByRB(RubriqueBudgetaire rb);
	public Convention makePersistent(Convention convention);
	public void makeTransient(Convention convention);
	public List<Convention> findAllConvention();
	public Convention findConventionById(int id);
	
	//TABLE Marche
	public List<Marche> findMarcheByRB(RubriqueBudgetaire rb);
	public Marche makePersistent(Marche marche);
	public void makeTransient(Marche marche);
	public List<Marche> findAllMarche();
	public Marche findMarcheById(int id);
	
	//TABLE LotMarche
	public LotMarche makePersistent(LotMarche lotMarche);
	public void makeTransient(LotMarche lotMarche);
	public List<LotMarche> findAllLotMarche();
	public LotMarche findLotMarcheById(int id);
	public List<LotMarche> findByMarche(Marche mar); 
	
	//TABLE OrdrePaiement
	public OrdrePaiement makePersistent(OrdrePaiement ordrePaiement);
	public void makeTransient(OrdrePaiement ordrePaiement);
	public List<OrdrePaiement> findAllOrdrePaiement();
	public OrdrePaiement findOrdrePaiementById(int id);
	
	//TABLE OrdrePaiementAnnulation
	public OrdrePaiementAnnulation makePersistent(OrdrePaiementAnnulation ordrePaiementAnnulation);
	public void makeTransient(OrdrePaiementAnnulation ordrePaiementAnnulation);
	public List<OrdrePaiementAnnulation> findAllOrdrePaiementAnnulation();
	public OrdrePaiementAnnulation findOrdrePaiementAnnulationById(int id);
	
	//TABLE Justificatif
	public Justificatif makePersistent(Justificatif justificatif);
	public void makeTransient(Justificatif justificatif);
	public List<Justificatif> findAllJustificatif();
	public Justificatif findJustificatifById(int id);

	
	//TABLE Prestation
	public List<Prestation> findByTypePrestation(TypePrestation prest);
	public Prestation makePersistent(Prestation prestation);
	public void makeTransient(Prestation prestation);
	public List<Prestation> findAllPrestation();
	public Prestation findPrestationById(int id);
		
	//TABLE TypePrestation
	public TypePrestation makePersistent(TypePrestation tPrest);
	public void makeTransient(TypePrestation tPrest);
	public List<TypePrestation> findAllTypePrestation();
	public List<TypePrestation> findByTypeEngagement(TypeEngagement te);
	public TypePrestation findTypePrestationById(int id);
	
	//TABLE OrdreVirement
	public OrdreVirement makePersistent(OrdreVirement ordreVirement);
	public void makeTransient(OrdreVirement ordreVirement);
	public List<OrdreVirement> findAllOrdreVirement();
	public OrdreVirement findOrdreVirementById(int id);
	
	//TABLE Cheque
	public Cheque makePersistent(Cheque cheque);
	public void makeTransient(Cheque cheque);
	public List<Cheque> findAllCheque();
	public Cheque findChequeById(int id);
	
	//TABLE TypeEngagement
	public TypeEngagement makePersistent(TypeEngagement typeEngagement);
	public void makeTransient(TypeEngagement typeEngagement);
	public List<TypeEngagement> findAllTypeEngagement();
	public TypeEngagement findTypeEngagementById(int id);
	
}
